package com.hulk.service;

/**
 * 封装ehCache常用方法
 * cacheManager：缓存管理器，以前是只允许单例的，不过现在也可以多实例了
 * cache：缓存管理器内可以放置若干cache，存放数据的实质，所有cache都实现了Ehcache接口
 * element：单条缓存数据的组成单位
 * @author CUIJIAJUN
 * @date   2016年11月18日
 * 
 */
import java.util.List;
import java.util.Map;

import net.sf.ehcache.Cache;

public interface EhCacheService {

	/**
	 * 设置缓存
	 * @param cacheName
	 * @param key
	 * @param value
	 */
	public void setObject(Object obj,String cacheName,String key,String... attachedKey) ;

	/**
	 * 取得缓存
	 * @param cacheName
	 * @param key
	 * @return
	 */
	public Object getObject(String cacheName, String key,String... attachedKey) ;

	/**
	 * 取得缓存
	 * @param cacheName
	 * @return
	 */
	public Map<Object, Object> getObject(String cacheName) ;

	/**
	 * 取得缓存
	 * @param cacheName
	 * @param key
	 * @return
	 */
	public List<Map<Object, Object>> getAllObject();

	/**
	 * 根据key删除指定缓存
	 * @param cacheName
	 * @param key
	 */
	public void removeObjectByKey(String cacheName, String key,String... attachedKey) ;

	/**
	 * 根据cacheName全部删除
	 * @param cacheName
	 */
	public void removeObjectByCacheName(String cacheName) ;

	/**
	 * 移除内存中所有缓存
	 */
	public void removeAll();

	/**
	 * 获取Cache对象
	 * @param cacheName
	 * @return
	 */
	public Cache getCache(String cacheName) ;

	/**
	 * 获取指定Cache的全部key
	 * @param cacheName
	 * @return
	 */
	public List getKeys(String cacheName) ;

	/**
	 * 缓存Cache是否包含某个key
	 * @param cacheName
	 * @param key
	 * @return
	 */
	public Boolean containsKey(String cacheName, String key) ;
}